package other;

/**
 * 给你一个字符串 s 和一个整数 k 。你
 * 可以选择字符串中的任一字符，并将其更
 * 改为任何其他大写英文字符。该操作最多
 * 可执行 k 次。
 * [a,b,c,a,b]
 * [a,b,c,d,b,e]
 * 在执行上述操作后，返回包含相同字母的最长子字符串的长度。
 */
public class LeetCode_424 {
    public static void main(String[] args) {
        LeetCode_424 leet = new LeetCode_424();
        int result = leet.characterReplacement("AABABBA", 1);
        System.out.println(result);
    }
    public int characterReplacement(String s, int k) {
        int hisK = k;
        int tail = 0;
        int max = -100;
        char[] sChars = s.toCharArray();
        for (int i = 0; i < sChars.length; i++) {
            tail = i + 1;
            while (tail <= sChars.length - 1 && hisK >= 0){
                if(sChars[i] != sChars[tail]){
                    if(hisK <= 0){
                        tail--;
                        break;
                    }
                    hisK--;
                }
                tail++;
            }
            int queueSize = (tail + 1) - (i + 1) + 1;
            max = queueSize >= max ? queueSize : max;
            hisK = k;
        }
        return max;
    }
}
